/**
 * ToggleSaver.java ##copyright## This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details. You should have received a copy of the GNU Lesser
 * General Public License along with this library; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 * 
 * @author ##author##
 * @modified ##date##
 * @version ##version##
 */

package fiveagon.saver;

/**
 * <code>Saver</code> that enables multiple frame recording in a sketch that doesn't continually
 * call <code>background</code>.
 */
public class ToggleSaver implements Saver {
  private final AbstractSaver realSaver;

  /**
   * Sole constructor.
   * 
   * @param realSaver the Saver that you want to toggle
   */
  public ToggleSaver(AbstractSaver realSaver) {
    this.realSaver = realSaver;
  }

  public void save() {
    realSaver.save();
  }

  /**
   * Call to start the High-Quality recording. Call once more to stop the recording.
   */
  public void saveRecord() {
    if (realSaver.isRecording()) {
      realSaver.endRecord();
    } else {
      realSaver.saveRecord();
      realSaver.beginRecord();
      System.out.println("call yourSaver.saveRecord() again to finish recording");
    }
  }

  /**
   * Breaks contract of <code>Saver</code>. This method is useless in this implementation.
   */
  public void beginRecord() {
    // intentionally left blank
  }

  /**
   * Breaks contract of <code>Saver</code>. This method is useless in this implementation.
   */
  public void endRecord() {
    // intentionally left blank
  }

  /**
   * Gets the prefix that this <code>Saver</code> will use when creating file names.
   * 
   * @return the prefix (including the folder name) of the files that will be created by this
   *         <code>Saver</code>
   */
  @Override
  public String toString() {
    return realSaver.toString();
  }
}
